Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

improved funcs and refacted #167

Merged
merged 3 commits into from
Dec 20, 2024

Conversation

denisushakov
Copy link
Contributor

@denisushakov denisushakov commented Dec 17, 2024

Summary by CodeRabbit

  • Новые функции

    • Добавлена функция для инициализации предопределенных значений на основе имени формы.
    • Введена процедура для установки флага ручного изменения предопределенного элемента.
    • Добавлены функции для управления таблицами предопределенных элементов и конфликтов.
  • Изменения

    • Обновлен номер версии конфигурации до 1.0.4.16.
    • Обновлена процедура с добавлением проверки параметров для повышения надежности.
    • Переименована процедура для более ясного контекста.
    • Обновлены комментарии для улучшения документации.
    • Изменены источники данных для получения ключевых полей в нескольких процедурах.
  • Удаления

    • Удалена процедура, отвечающая за установку флага ручного изменения.
    • Удалены функции, связанные с предопределенными элементами.

@denisushakov denisushakov added the enhancement Улучшение существующей функциональности label Dec 17, 2024
@denisushakov denisushakov self-assigned this Dec 17, 2024
Copy link

coderabbitai bot commented Dec 17, 2024

Walkthrough

Данный pull request включает обновление версии конфигурации с 1.0.4.15 до 1.0.4.16. Изменения затрагивают несколько модулей, связанных с предопределенными значениями и обновлением информационной базы. Основные модификации включают обновление номера версии в процедуре ПриДобавленииПодсистемы, изменение логики получения предопределенных значений, добавление новых функций и улучшение обработки ошибок.

Changes

Файл Изменения
src/cf/CommonModules/пбп_ОбновлениеИнформационнойБазыПБП/Ext/Module.bsl Обновлен номер версии с "1.0.4.15" на "1.0.4.16" в процедуре ПриДобавленииПодсистемы
src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl - Добавлена проверка входных параметров в функции КлючиХешаПредопределенногоЭлемента
- Переименована процедура ОбновитьХешЭлемента в ОбновитьХешПредопределенногоЭлемента
- Добавлена новая процедура УстановитьФлагРучноеИзменение
src/cf/CommonModules/пбп_ПредопределенныеЗначенияВызовСервера/Ext/Module.bsl Добавлена новая экспортная функция ИнициализироватьПредопределенныеЗначения
src/cf/CommonModules/пбп_ПредопределенныеЗначенияСлужебный/Ext/Module.bsl - Удалена процедура УстановитьФлагРучноеИзменение
- Обновлен вызов установки флага ручного изменения
src/cf/Configuration.xml Обновлен номер версии с 1.0.4.15 на 1.0.4.16
src/cf/CommonModules/пбп_ПредопределенныеЗначенияКлиент/Ext/Module.bsl Удален комментарий о серверных методах обработки диалогов
src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl - Удалены функции ТаблицаПредопределенныхЭлементов и КолонкиПредопределенныхЭлементов
- Функция ОбщиеКолонки теперь экспортируется
src/cf/InformationRegisters/пбп_СостоянияПредопределенныхЭлементов/Ext/ManagerModule.bsl Изменен источник данных для переменной КлючевыеПоля
src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl Изменен вызов процедуры обновления хеша предопределенного элемента
src/cfe/YAXUnit/CommonModules/ОМ_ПредопределенныеЗначенияСлужебный/Ext/Module.bsl Обновлены источники данных в тестовых процедурах

Possibly related PRs

Suggested reviewers

  • ivanmolodec
  • thvvmas

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR. (Beta)
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

This comment has been minimized.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl (1)

105-113: Добавьте документацию о возможных исключениях

В документации процедуры УстановитьФлагРучноеИзменение следует указать возможные исключения.

Дополните комментарий:

// Обновляет флаг ручного изменения элемента
//
// Параметры:
//  Элемент  - СправочникСсылка, ПланВидовХарактеристикСсылка - Ссылка на предопределенный элемент
//  Флаг     - Булево - Устанавливается если были изменены ключевые поля пользователем.
+// 
+// Исключения:
+//  - Если элемент не найден
+//  - Если элемент не является предопределенным
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ba582d0 and c0ca03d.

📒 Files selected for processing (5)
  • src/cf/CommonModules/пбп_ОбновлениеИнформационнойБазыПБП/Ext/Module.bsl (1 hunks)
  • src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl (4 hunks)
  • src/cf/CommonModules/пбп_ПредопределенныеЗначенияВызовСервера/Ext/Module.bsl (1 hunks)
  • src/cf/CommonModules/пбп_ПредопределенныеЗначенияСлужебный/Ext/Module.bsl (1 hunks)
  • src/cf/Configuration.xml (1 hunks)
✅ Files skipped from review due to trivial changes (2)
  • src/cf/Configuration.xml
  • src/cf/CommonModules/пбп_ОбновлениеИнформационнойБазыПБП/Ext/Module.bsl
🔇 Additional comments (3)
src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl (2)

58-60: Улучшена проверка входных параметров

Добавленная проверка корректно обрабатывает невалидные входные данные.


81-86: Улучшено наименование процедуры

Переименование процедуры ОбновитьХешЭлемента в ОбновитьХешПредопределенногоЭлемента делает её назначение более понятным.

src/cf/CommonModules/пбп_ПредопределенныеЗначенияСлужебный/Ext/Module.bsl (1)

304-304: Улучшена инкапсуляция

Вызов УстановитьФлагРучноеИзменение через модуль пбп_ПредопределенныеЗначения улучшает структуру кода.

Comment on lines +23 to +32
// Инициализирует предопределенные значения из таблицы.
//
// Параметры:
// ИмяФормы - Строка - Имя формы из которой выполняется инициализация.
//
// Возвращаемое значение:
// ФиксированнаяСтруктура - Таблица с конфликтными элементами
// * АдресТаблицы - Строка - Адрес временного хранилища.
// * ЕстьСтроки - Булево - Истина если есть строки в таблице конфликтов.
//
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Добавьте дополнительную обработку ошибок

Рекомендуется добавить проверку входного параметра ИмяФормы на пустое значение и корректный тип данных.

Предлагаемые изменения:

Функция ИнициализироватьПредопределенныеЗначения(ИмяФормы) Экспорт
+    Если Не ЗначениеЗаполнено(ИмяФормы) Тогда
+        ВызватьИсключение НСтр("ru='Не указано имя формы'");
+    КонецЕсли;
+    
+    Если ТипЗнч(ИмяФормы) <> Тип("Строка") Тогда
+        ВызватьИсключение НСтр("ru='Некорректный тип параметра ИмяФормы'");
+    КонецЕсли;

Committable suggestion skipped: line range outside the PR's diff.

This comment has been minimized.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (4)
src/cf/CommonModules/пбп_ПредопределенныеЗначенияСлужебный/Ext/Module.bsl (3)

219-220: Уточнение лексического стиля
Строки выглядят корректно, но рекомендуется привести имя возвращаемой таблицы к более читаемому формату, например "ТаблицаКонфликтных" вместо "ТаблицаКонфликтныхЭлементов", если это согласуется со стилем именования в проекте.


366-386: Логика конфликта идентификаторов
Функция ТаблицаКонфликтныхЭлементов расширяет базовую таблицу дополнительными полями и возвращает её для обработки конфликтов. Рекомендуется при добавлении поля "Служебный_ДублированиеИдентификаторов" предоставлять комментарий, объясняющий его назначение, чтобы мера по устранению конфликтов была более понятна коллегам.


652-665: Расширение функционала
СоздатьКолонкиТаблицыПредопределенныхЭлементов(…) даёт удобный инструмент для динамического формирования структуры таблицы. Обратите внимание, что в некоторых случаях может потребоваться контроль дубликатов колонок (если колонки формируются и вне данной процедуры).

src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl (1)

21-21: Выделение области
Новая область “#Область ПрограммныйИнтерфейс” повышает читабельность модуля. Рекомендуется документировать границы и назначение областей для более быстрой навигации по файлу.

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c0ca03d and 2c1f3a1.

📒 Files selected for processing (5)
  • src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl (5 hunks)
  • src/cf/CommonModules/пбп_ПредопределенныеЗначенияКлиент/Ext/Module.bsl (0 hunks)
  • src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl (2 hunks)
  • src/cf/CommonModules/пбп_ПредопределенныеЗначенияСлужебный/Ext/Module.bsl (4 hunks)
  • src/cf/InformationRegisters/пбп_СостоянияПредопределенныхЭлементов/Ext/ManagerModule.bsl (1 hunks)
💤 Files with no reviewable changes (1)
  • src/cf/CommonModules/пбп_ПредопределенныеЗначенияКлиент/Ext/Module.bsl
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl
🔇 Additional comments (9)
src/cf/CommonModules/пбп_ПредопределенныеЗначенияСлужебный/Ext/Module.bsl (6)

304-304: Проверка вызываемой процедуры
Здесь вызывается “УстановитьФлагРучноеИзменение” из модуля пбп_ПредопределенныеЗначения. Убедитесь, что соответствующая процедура действительно экспортируется и доступна в нужном контексте, поскольку аналогичная процедура была удалена в текущем модуле.


332-333: Отличная структуризация
Создание отдельной области “#Область РаботаСТаблицейПредопределенных” повышает читабельность и логическую группировку кода.


334-364: Назначение функции
Функция ТаблицаПредопределенныхЭлементов(Менеджер) хорошо структурирована и позволяет централизованно формировать таблицу значений для предопределенных элементов. Обратите внимание, чтобы все внешние вызовы (например, пбп_ПредопределенныеЗначенияПовтИсп.ФункцииСозданияТаблицПредопределенныхЭлементов()) корректно обрабатывали исключения, если используются нестандартные механизмы динамического вызова.


388-414: Убедитесь в согласованности типов
Функция КолонкиПредопределенныхЭлементов возвращает структуру, используемую в других модулях. Проверьте, что все колонки (например, строки, булево и т.д.) совпадают по типу с соответствующими полями в регистре или справочнике, чтобы избежать ошибок при объединении таблиц или вставке данных.


416-416: Явное завершение области
Закрытие области “#КонецОбласти” соответствует стандартному оформлению. Нет замечаний.


666-666: Логическое завершение
Ограничивающая область (#КонецОбласти) корректно закрывает блок кода. Нет дополнительных замечаний.

src/cf/InformationRegisters/пбп_СостоянияПредопределенныхЭлементов/Ext/ManagerModule.bsl (1)

115-115: Изменение источника ключевых полей
При использовании пбп_ПредопределенныеЗначенияСлужебный.КолонкиПредопределенныхЭлементов(...) следует убедиться, что возвращаемая структура колонок полностью соответствует потребностям этой функции (КлючиХешаОбъект). Если исчезновение/переименование колонок произойдёт в другом модуле, это может привести к ошибкам при расчёте хеша.

src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl (2)

1-20: Лицензионные комментарии
Все заголовки с лицензией Apache 2.0 оформлены корректно и соответствуют принятым стандартам открытого ПО.


329-329: Экспорт функции ОбщиеКолонки
Функция ОбщиеКолонки(Менеджер) помечена как Экспорт, это верное решение. Убедитесь, что она вызывается там, где перед этим была удалена аналогичная логика, чтобы избежать дублирования.

Copy link

Passed

Analysis Details

0 Issues

  • Bug 0 Bugs
  • Vulnerability 0 Vulnerabilities
  • Code Smell 0 Code Smells

Coverage and Duplications

  • Coverage No coverage information (0.00% Estimated after merge)
  • Duplications 0.00% Duplicated Code (0.40% Estimated after merge)

Project ID: PSSL

View in SonarQube

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2c1f3a1 and dc4e7fa.

📒 Files selected for processing (2)
  • src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl (1 hunks)
  • src/cfe/YAXUnit/CommonModules/ОМ_ПредопределенныеЗначенияСлужебный/Ext/Module.bsl (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl
🔇 Additional comments (1)
src/cfe/YAXUnit/CommonModules/ОМ_ПредопределенныеЗначенияСлужебный/Ext/Module.bsl (1)

Line range hint 1-143: Тестовое покрытие реализовано корректно

Набор тестов охватывает все необходимые сценарии:

  • Корректные данные
  • Пустая таблица
  • Менеджер не из подсистемы предопределенных
  • Менеджер равен Неопределено
  • Проверка принадлежности к подсистеме

Реализация включает правильные проверки типов и утверждения.

@@ -25,7 +25,7 @@
МенеджерОбъекта = пбп_Переадресация
.МенеджерОбъектаПоПолномуИмени("ПланВидовХарактеристик.пбп_ПредопределенныеЗначения");

Таблица = пбп_ПредопределенныеЗначенияПереопределяемый.ТаблицаПредопределенныхЭлементов(МенеджерОбъекта);
Таблица = пбп_ПредопределенныеЗначенияСлужебный.ТаблицаПредопределенныхЭлементов(МенеджерОбъекта);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

Требуется обновление ссылок на переопределяемый модуль

Анализ показал, что старый модуль пбп_ПредопределенныеЗначенияПереопределяемый все еще активно используется в следующих местах:

  • В модуле пбп_ПредопределенныеЗначенияСлужебный для получения общих колонок и в документации методов
  • В модуле пбп_ПредопределенныеЗначенияПовтИсп для работы с предопределенными значениями различных типов
  • В модуле пбп_ПредопределенныеЗначения для получения исключаемых полей
  • В форме пбп_ФормаРазрешенияКонфликтовПредопределенныхЭлементов

Для обеспечения согласованности кодовой базы необходимо обновить все эти вызовы на новый модуль пбп_ПредопределенныеЗначенияСлужебный.

🔗 Analysis chain

Изменение источника получения предопределенных значений

Изменение источника с пбп_ПредопределенныеЗначенияПереопределяемый на пбп_ПредопределенныеЗначенияСлужебный выглядит логичным, так как это соответствует общей реструктуризации модулей, упомянутой в сводке изменений.

Давайте проверим согласованность использования нового модуля:

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Описание: Поиск оставшихся использований старого модуля
rg -l "пбп_ПредопределенныеЗначенияПереопределяемый\.ТаблицаПредопределенныхЭлементов"

# Описание: Проверка использования нового модуля
rg -l "пбп_ПредопределенныеЗначенияСлужебный\.ТаблицаПредопределенныхЭлементов"

Length of output: 326


Script:

#!/bin/bash
# Проверим содержимое файла, где используется старый модуль
rg -A 5 "пбп_ПредопределенныеЗначенияПереопределяемый\.ТаблицаПредопределенныхЭлементов" src/cf/CommonModules/пбп_ПредопределенныеЗначенияСлужебный/Ext/Module.bsl

# Проверим, есть ли другие вызовы методов старого модуля
rg "пбп_ПредопределенныеЗначенияПереопределяемый\." 

Length of output: 4552

@ivanmolodec ivanmolodec merged commit 581e23a into develop Dec 20, 2024
6 checks passed
@ivanmolodec ivanmolodec deleted the improve-func-of-getting-hash-keys-164 branch December 20, 2024 15:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Улучшение существующей функциональности
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Доработать функцию получения ключей хеша
2 participants